package controlegaragem;

import javax.swing.JTextArea;

public class RegrasGaragem {
	
	private Carro[] carro;
	private Moto [] moto;
	private int qtdVeiculos = 0;
	private int qtdMotos = 0;
	private String data;
	private float precoHora;
	private String nome;
	private static int MAX_VEICULOS = 20;

    RegrasGaragem(String nome, String dia){//, float precoHora) {
        this.nome = nome;
        //this.precoHora = precoHora;
        this.data = dia;
        carro = new Carro[MAX_VEICULOS];
        moto = new Moto[MAX_VEICULOS];
    }

    void insereVeiculo(Carro v, float precoHora) {
        carro[qtdVeiculos] = v;
        qtdVeiculos++;
        this.precoHora = precoHora;
    }
    
    void insereMoto(Moto v2, float precoHora) {
        moto[qtdMotos] = v2;
        qtdMotos++;
        this.precoHora = precoHora;
    }
    
	void listaVeiculos(JTextArea taListar) {
        taListar.setText("");
        String saida = null;
        
        saida = "Garagem - Dia: " + data + "\n";
        saida = saida + "Veiculo Situacao" + "\n";

        int contaVeiculos = 0;
        int qtdHorasAcumuladasVeiculo = 0;
        int qtdHorasAcumuladasMoto = 0;
        float mediaCadaVeiculo = 0;

        for (int i = 0; i < carro.length; i++) {
            Carro v = carro[i];
            if (v != null) {
                contaVeiculos++;
                //System.out.print(v.placa + " - " + v.marca + " - ");
                saida = saida + v.getPlaca() + " - " + v.getMarca() + " - ";
                if (v.estacionado()) {
                    //System.out.println("Ainda na Garagem");
                    saida = saida + "Ainda na Garagem" + "\n";
                } else {
                    //System.out.println("Estacionado durante " + v.getDuracaoEstacionamento() + " horas");
                    saida = saida + "Estacionado durante " + v.getDuracaoEstacionamento() + " horas" + "\n";
                    qtdHorasAcumuladasVeiculo = qtdHorasAcumuladasVeiculo + v.getDuracaoEstacionamento();
                    mediaCadaVeiculo = qtdHorasAcumuladasVeiculo/contaVeiculos;
                }
            }
        }
        for (int i = 0; i < moto.length; i++) {
            Moto v2 = moto[i];
            if (v2 != null) {
                contaVeiculos++;
                //System.out.print(v.placa + " - " + v.marca + " - ");
                saida = saida + v2.getPlaca() + " - " + v2.getMarca() + " - ";
                if (v2.estacionado()) {
                    //System.out.println("Ainda na Garagem");
                    saida = saida + "Ainda na Garagem" + "\n";
                } else {
                    //System.out.println("Estacionado durante " + v.getDuracaoEstacionamento() + " horas");
                    saida = saida + "Estacionado durante " + v2.getDuracaoEstacionamento() + " horas" + "\n";
                    
                    /*CONCEITO DE POLIMORFISMO UMA VEZ QUE O VALOR PARA MOTO É DIFERENTE DOS DEMAIS VEICULOS*/
                    qtdHorasAcumuladasMoto = qtdHorasAcumuladasMoto + v2.getDuracaoEstacionamento();
                    mediaCadaVeiculo = qtdHorasAcumuladasMoto/contaVeiculos;
                }
            }
        }
        
        Carro v = new Carro();
        Moto v2 = new Moto();
        
        saida = saida + "\n";
        saida = saida + "********* RESUMO DO DIA ************" + "\n";
        saida = saida + "Qtd Veiculos: " + contaVeiculos + "\n";
        int totalHoras = qtdHorasAcumuladasMoto + qtdHorasAcumuladasVeiculo;
        saida = saida + "Total Horas: " + totalHoras + "\n";
        saida = saida + "Média que cada veiculo ficou estacionado: " + mediaCadaVeiculo + "\n";
        float somaCaixa = (float) ((qtdHorasAcumuladasVeiculo * v.getPrecoCarro()) + (qtdHorasAcumuladasMoto * v2.getPrecoMoto()));
        saida = saida + "Caixa R$: " + somaCaixa + "\n";
        saida = saida + "********* FIM da LISTAGEM ************" + "\n";
        /*
        saida = saida + "********* RESUMO DO DIA ************" + "\n";
        saida = saida + "Qtd Veiculos: " + contaVeiculos + "\n";
        saida = saida + "Total Horas: " + qtdHorasAcumuladas + "\n";
        saida = saida + "Média que cada veiculo ficou estacionado: " + mediaCadaVeiculo + "\n";
        saida = saida + "Caixa R$: " + qtdHorasAcumuladas * 0.5 + "\n";
        saida = saida + "********* FIM da LISTAGEM ************" + "\n";*/
        
//        System.out.println("********* RESUMO DO DIA ************");
//        System.out.println("Qtd Veiculos: " + contaVeiculos);
//        System.out.println("Total Horas: " + qtdHorasAcumuladas);
//        System.out.println("Caixa R$: " + qtdHorasAcumuladas * precoHora);
//        System.out.println("********* FIM da LISTAGEM ************");
        
        taListar.setText(saida);
    }

}
